/**
 * 
 */
package cn.java.innerclass;

/**
* 选课服务类
* @author 攀博课堂
* @version v1.0
*/
public class SelectCourse implements ISelectCourse {
	
	//数组存储添加的课程信息
	PbCourse[] courses;
	
	 public SelectCourse(int size) {
		//在构造方法中对数组进行初始化,所有元素默认为null(空引用)
		 courses = new PbCourse[size];
	 }
	

	/**
	 * 添加选课
	* @param course 课程信息对象
	* @return 1表示添加成功，0表示添加失败
	* @author 攀博课堂
	* @version v1.0
	 */
	public int addCourse(PbCourse course) {
		//从数组的第0个元素开始放pbCourse对象
		for(int i=0;i<courses.length;i++) {
			if(courses[i] == null) {
				//向courses存储课程信息
				courses[i] = course;
				return 1;
			}
		}
		return 0;
		
	}
	/**
	 * 
	* 从选课列表中删除课程
	* @param id 课程编号
	* @return 1表示删除成功，0表示失败
	* @author 攀博课堂
	* @version v1.0
	 */
	public int delCourse(long id){
		//删除元素的下标
		int delIndex = -1;
		//拿id和数组元素（pbCourse对象）的id属性进行对比，如果相等则删除
		for(int i=0;i<courses.length;i++) {
			if(courses[i]!=null && courses[i].getId() == id) {
				//将数组元素设置为null
				courses[i] = null;
				//将删除元素的下标复制给delIndex
				delIndex = i;
				break;
			}
		}
		if(delIndex!=-1) {
			//将删除元素后边的元素向前移动一个位置
			for(int i=delIndex+1;i<courses.length;i++) {
				//将后一个元素移动到前一个元素的位置
				courses[i-1]=courses[i];
				courses[i] = null;
			}
			return 1;
		}
		
		return 0;
	}
	
	/**
	 * 
	* 选课数目
	* @return 总共选课数量
	* @author 攀博课堂
	* @version v1.0
	 */
	public int getSize(){
		int size = 0;
		for(int i=0;i<courses.length;i++) {
			if(courses[i]!=null) {
				size++;
			}
		}
		return size;
	}
	
	
	/**
	 * 
	* 选课列表
	* @return 选课详细信息
	* @author 攀博课堂
	* @version v1.0
	 */
	public PbCourse[] getCourses(){
		//得到选课的数量
		int size = getSize();
		//要返回一个选课列表的数组，数组中的元素全部不为null
		PbCourse[] courseList = new PbCourse[size];
		for(int i=0;i<size;i++) {
			if(courses[i]!=null) {
				courseList[i] = courses[i];
			}
		}
		return courseList;
	}
	
	
	public static void main(String[] args) {
		
		//指定数组的大小
		ISelectCourse selectCourse = new SelectCourse(10);
		//添加选课
		selectCourse.addCourse(new PbCourse(1L, "java面向对象开发-基础篇",20f));
		selectCourse.addCourse(new PbCourse(2L, "java面向对象开发-高级篇",30f));
		selectCourse.addCourse(new PbCourse(3L, "javaWeb开发", 30f));
		selectCourse.addCourse(new PbCourse(4L, "javaWeb项目之攀博课堂公众号项目", 50f));
		selectCourse.addCourse(new PbCourse(5L, "java分布式项目之攀博课堂在线教育平台", 50f));
		selectCourse.addCourse(new PbCourse(6L, "java分布式项目之攀博课堂聚合支付平台", 50f));
		//删除选课
		selectCourse.delCourse(2);
		selectCourse.delCourse(4);
		
		//查询选课的数量
		System.out.println(selectCourse.getSize());
		//查询选课的列表
		PbCourse[] courseList = selectCourse.getCourses();
		for(int i=0;i<courseList.length;i++) {
			System.out.println(courseList[i]);
		}
	}
}
